package com.xiaoshuidi.cloud.module.finance.service.invoice;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.framework.hangxin.core.dto.InvoicingRespDTO;
import com.xiaoshuidi.cloud.framework.security.core.LoginUser;
import com.xiaoshuidi.cloud.module.finance.controller.admin.invoice.vo.FinanceInvoiceApprovalReqVO;
import com.xiaoshuidi.cloud.module.finance.controller.admin.invoice.vo.FinanceInvoiceCompanyApplyReqVO;
import com.xiaoshuidi.cloud.module.finance.controller.admin.invoice.vo.FinanceInvoiceRecordPageReqVO;
import com.xiaoshuidi.cloud.module.finance.controller.app.invoice.vo.AppFinanceInvoiceApplyReqVO;
import com.xiaoshuidi.cloud.module.finance.controller.app.invoice.vo.AppFinanceInvoicePageReqVO;
import com.xiaoshuidi.cloud.module.finance.dal.dataobject.invoice.FinanceInvoiceRecordDO;
import com.xiaoshuidi.cloud.module.finance.dal.dataobject.invoice.FinanceInvoiceRecordItemDO;

import java.util.List;

public interface FinanceInvoiceRecordService {
    PageResult<FinanceInvoiceRecordDO> getPage(FinanceInvoiceRecordPageReqVO reqVO);

    FinanceInvoiceRecordDO getById(Long id);

    List<FinanceInvoiceRecordItemDO> getItems(Long id);

    Long apply(LoginUser user, AppFinanceInvoiceApplyReqVO reqVO);

    PageResult<FinanceInvoiceRecordDO> getPage(AppFinanceInvoicePageReqVO reqVO);

    void approve(FinanceInvoiceApprovalReqVO reqVO);

    void companyApply(FinanceInvoiceCompanyApplyReqVO reqVO);

    void callApi(FinanceInvoiceRecordDO record);

    FinanceInvoiceRecordDO getBySeqNo(String seqNo);

    void updateById(FinanceInvoiceRecordDO build);

    InvoicingRespDTO query(Long id);
}
